

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <math.h>

#define tmax T
#define nx N
#define ny N
double ex[nx][ny +1];
double ey[nx +1][ny];
double hz[nx][ny];

void init_arrays()
{
    int i, j;
    for (i=0; i<nx+1; i++)  {
        for (j=0; j<ny; j++)  {
            ey[i][j] = 0;
        }
    }
    for (i=0; i<nx; i++)  {
        for (j=0; j<ny+1; j++)  {
            ex[i][j] = 0;
        }
    }
    for (j=0; j<ny; j++)  {
        ey[0][j] = ((double)j)/ny;
    }
    for (i=0; i<nx; i++)    {
        for (j=0; j<ny; j++)  {
            hz[i][j] = 0;
        }
    }
}

double rtclock()
{
  struct timezone tzp;
  struct timeval tp;
  int stat;
  gettimeofday (&tp, &tzp);
  return (tp.tv_sec + tp.tv_usec*1.0e-6);
}

int main()
{
  init_arrays();

  double annot_t_start=0, annot_t_end=0, annot_t_total=0;
  int annot_i;

  for (annot_i=0; annot_i<REPS; annot_i++)
  {
    annot_t_start = rtclock();
    


#define ceild(n,d)  ceil(((double)(n))/((double)(d)))
#define floord(n,d) floor(((double)(n))/((double)(d)))
#define max(x,y)    ((x) > (y)? (x) : (y))
#define min(x,y)    ((x) < (y)? (x) : (y))

	#define S1(zT0,zT1,zT2,zT3,t,j)	{ey[0][j]=t;}
	#define S2(zT0,zT1,zT2,zT3,zT4,zT5,t,i,j)	{ey[i][j]=ey[i][j]-((double)(1))/2*(hz[i][j]-hz[i-1][j]);}
	#define S3(zT0,zT1,zT2,zT3,zT4,zT5,t,i,j)	{ex[i][j]=ex[i][j]-((double)(1))/2*(hz[i][j]-hz[i][j-1]);}
	#define S4(zT0,zT1,zT2,zT3,zT4,zT5,t,i,j)	{hz[i][j]=hz[i][j]-((double)(7))/10*(ey[1+i][j]+ex[i][1+j]-ex[i][j]-ey[i][j]);}

	int c1, c2, c3, c4, c5, c6, c7, c8, c9;

	register int lbv, ubv;

/* Generated from PLuTo-produced CLooG file by CLooG v0.14.1 64 bits in 18.45s. */
for (c1=0;c1<=floord(tmax-1,256);c1++) {
  for (c2=max(ceild(256*c1-255,256),0);c2<=min(floord(256*c1+ny+255,256),floord(tmax+ny-1,256));c2++) {
    for (c3=max(max(max(max(ceild(256*c2-ny-254,256),0),ceild(512*c1-256*c2-509,256)),ceild(256*c1-255,256)),ceild(256*c1-65280*c2-129795,65280));c3<=min(min(floord(256*c2+nx+254,256),floord(tmax+nx-1,256)),floord(256*c1+nx+255,256));c3++) {
      for (c4=max(max(max(max(0,ceild(256*c3-nx-31,32)),ceild(256*c2-ny-31,32)),8*c1),8*c1-1792*c2-1792*c3-3563);c4<=min(min(min(min(min(8*c1+7,floord(256*c2+256*c3+509,64)),floord(256*c2+255,32)),floord(tmax-1,32)),floord(256*c3+255,32)),floord(7936*c2+7936*c3+15779,32));c4++) {
        for (c5=max(max(max(max(max(max(0,ceild(8*c1-1792*c3-c4-1995,224)),ceild(256*c3-nx-30,32)),ceild(32*c4-31,32)),ceild(-7936*c3+32*c4-8835,992)),8*c2),ceild(-256*c3+64*c4-285,32));c5<=min(min(min(floord(256*c3+ny+254,32),8*c2+7),floord(tmax+ny-1,32)),floord(32*c4+ny+31,32));c5++) {
          for (c6=max(max(max(max(max(max(max(ceild(32*c5-ny-30,32),8*c3),ceild(-8*c1+8*c3+c4-224*c5-434,225)),ceild(8*c1-8*c3-c4-224*c5-434,223)),ceild(32*c4-992*c5-1891,992)),ceild(32*c4-31,32)),0),ceild(64*c4-32*c5-61,32));c6<=min(min(min(floord(tmax+nx-1,32),8*c3+7),floord(32*c4+nx+31,32)),floord(32*c5+nx+30,32));c6++) {
            if ((c4 <= floord(32*c5-ny,32)) && (c5 >= max(ceild(32*c6-nx+ny,32),ceild(ny,32)))) {
              for (c9=max(32*c5-ny+1,32*c6);c9<=min(32*c5+nx-ny,32*c6+31);c9++) {
                S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,32*c5-ny,-32*c5+c9+ny-1,ny-1) ;
              }
            }
            if ((c4 <= floord(32*c6-nx,32)) && (c5 <= floord(32*c6-nx+ny-1,32)) && (c6 >= ceild(nx,32))) {
              for (c8=max(32*c5,32*c6-nx+1);c8<=min(32*c5+31,32*c6-nx+ny);c8++) {
                S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,32*c6-nx,nx-1,-32*c6+c8+nx-1) ;
              }
            }
            if ((c1 == c3) && (c4 == c6)) {
              for (c7=max(max(32*c6,32*c5-ny+1),0);c7<=min(min(tmax-1,32*c5-ny+31),32*c6+30);c7++) {
                for (c8=32*c5;c8<=c7+ny-1;c8++) {
                  S1(c1,-c1+c2,c4,-c4+c5,c7,-c7+c8) ;
                  S3(c1,0,-c1+c2,c4,0,-c4+c5,c7,0,-c7+c8) ;
                  for (c9=c7+1;c9<=32*c6+31;c9++) {
                    S2(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9,-c7+c8) ;
                    S3(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9,-c7+c8) ;
                    S4(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9-1,-c7+c8-1) ;
                  }
                }
                for (c9=c7+1;c9<=32*c6+31;c9++) {
                  S4(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9-1,ny-1) ;
                }
              }
            }
            if ((c1 == c3) && (c4 == c6)) {
              for (c7=max(max(32*c6,0),32*c5-ny+32);c7<=min(min(tmax-1,32*c6+30),32*c5-1);c7++) {
                for (c8=32*c5;c8<=32*c5+31;c8++) {
                  S1(c1,-c1+c2,c4,-c4+c5,c7,-c7+c8) ;
                  S3(c1,0,-c1+c2,c4,0,-c4+c5,c7,0,-c7+c8) ;
                  for (c9=c7+1;c9<=32*c6+31;c9++) {
                    S2(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9,-c7+c8) ;
                    S3(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9,-c7+c8) ;
                    S4(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9-1,-c7+c8-1) ;
                  }
                }
              }
            }
            if ((c1 == c3) && (c4 == c6)) {
              for (c7=max(max(32*c5,32*c6),0);c7<=min(min(tmax-1,32*c6+30),32*c5+30);c7++) {
                S1(c1,-c1+c2,c4,-c4+c5,c7,0) ;
                for (c9=c7+1;c9<=32*c6+31;c9++) {
                  S2(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9,0) ;
                }
                for (c8=c7+1;c8<=32*c5+31;c8++) {
                  S1(c1,-c1+c2,c4,-c4+c5,c7,-c7+c8) ;
                  S3(c1,0,-c1+c2,c4,0,-c4+c5,c7,0,-c7+c8) ;
                  for (c9=c7+1;c9<=32*c6+31;c9++) {
                    S2(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9,-c7+c8) ;
                    S3(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9,-c7+c8) ;
                    S4(c1,0,-c1+c2,c4,0,-c4+c5,c7,-c7+c9-1,-c7+c8-1) ;
                  }
                }
              }
            }
            for (c7=max(max(max(32*c5-ny+1,32*c6-nx+1),32*c4),0);c7<=min(min(min(32*c6-nx+31,32*c4+31),tmax-1),32*c5-ny+31);c7++) {
              for (c8=32*c5;c8<=c7+ny-1;c8++) {
                for (c9=32*c6;c9<=c7+nx-1;c9++) {
                  S2(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S3(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9-1,-c7+c8-1) ;
                }
                S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,nx-1,-c7+c8-1) ;
              }
              for (c9=32*c6;c9<=c7+nx;c9++) {
                S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9-1,ny-1) ;
              }
            }
            for (c7=max(max(max(0,32*c4),32*c6-nx+1),32*c5-ny+32);c7<=min(min(min(32*c4+31,tmax-1),32*c5-1),32*c6-nx+31);c7++) {
              for (c8=32*c5;c8<=32*c5+31;c8++) {
                for (c9=32*c6;c9<=c7+nx-1;c9++) {
                  S2(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S3(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9-1,-c7+c8-1) ;
                }
                S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,nx-1,-c7+c8-1) ;
              }
            }
            for (c7=max(max(max(32*c6-nx+32,32*c5-ny+1),32*c4),0);c7<=min(min(min(32*c4+31,tmax-1),32*c5-ny+31),32*c6-1);c7++) {
              for (c8=32*c5;c8<=c7+ny-1;c8++) {
                for (c9=32*c6;c9<=32*c6+31;c9++) {
                  S2(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S3(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9-1,-c7+c8-1) ;
                }
              }
              for (c9=32*c6;c9<=32*c6+31;c9++) {
                S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9-1,ny-1) ;
              }
            }
            for (c7=max(max(max(32*c5,0),32*c4),32*c6-nx+1);c7<=min(min(min(32*c4+31,32*c5+30),tmax-1),32*c6-nx+31);c7++) {
              for (c9=32*c6;c9<=c7+nx-1;c9++) {
                S2(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,0) ;
              }
              for (c8=c7+1;c8<=32*c5+31;c8++) {
                for (c9=32*c6;c9<=c7+nx-1;c9++) {
                  S2(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S3(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9-1,-c7+c8-1) ;
                }
                S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,nx-1,-c7+c8-1) ;
              }
            }
            for (c7=max(max(max(0,32*c4),32*c6-nx+32),32*c5-ny+32);c7<=min(min(min(32*c6-1,32*c4+31),tmax-1),32*c5-1);c7++) {
/*@ begin Loop(
transform UnrollJam(ufactor=8)
              for (c8=32*c5;c8<=32*c5+31;c8++) 
transform Unroll(ufactor=8)
                for (c9=32*c6;c9<=32*c6+31;c9++) 
{
                  S2(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S3(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9-1,-c7+c8-1) ;
}
) @*/{ 

  for (c8 = 32 * c5; c8 <= 32 * c5 + 31 - 7; c8 = c8 + 8)     { 

      for (c9 = 32 * c6; c9 <= 32 * c6 + 31 - 7; c9 = c9 + 8)         { 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 1)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 1)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 1) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 1)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 1)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1) - 1, -c7 + (c8 + 1) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 1)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 1)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2) - 1, -c7 + (c8 + 1) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 1)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 1)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3) - 1, -c7 + (c8 + 1) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 1)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 1)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4) - 1, -c7 + (c8 + 1) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 1)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 1)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5) - 1, -c7 + (c8 + 1) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 1)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 1)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6) - 1, -c7 + (c8 + 1) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 1)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 1)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7) - 1, -c7 + (c8 + 1) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 2)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 2)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 2) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 2)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 2)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1) - 1, -c7 + (c8 + 2) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 2)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 2)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2) - 1, -c7 + (c8 + 2) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 2)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 2)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3) - 1, -c7 + (c8 + 2) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 2)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 2)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4) - 1, -c7 + (c8 + 2) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 2)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 2)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5) - 1, -c7 + (c8 + 2) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 2)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 2)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6) - 1, -c7 + (c8 + 2) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 2)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 2)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7) - 1, -c7 + (c8 + 2) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 3)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 3)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 3) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 3)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 3)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1) - 1, -c7 + (c8 + 3) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 3)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 3)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2) - 1, -c7 + (c8 + 3) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 3)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 3)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3) - 1, -c7 + (c8 + 3) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 3)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 3)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4) - 1, -c7 + (c8 + 3) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 3)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 3)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5) - 1, -c7 + (c8 + 3) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 3)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 3)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6) - 1, -c7 + (c8 + 3) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 3)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 3)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7) - 1, -c7 + (c8 + 3) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 4)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 4)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 4) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 4)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 4)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1) - 1, -c7 + (c8 + 4) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 4)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 4)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2) - 1, -c7 + (c8 + 4) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 4)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 4)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3) - 1, -c7 + (c8 + 4) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 4)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 4)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4) - 1, -c7 + (c8 + 4) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 4)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 4)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5) - 1, -c7 + (c8 + 4) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 4)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 4)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6) - 1, -c7 + (c8 + 4) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 4)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 4)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7) - 1, -c7 + (c8 + 4) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 5)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 5)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 5) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 5)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 5)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1) - 1, -c7 + (c8 + 5) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 5)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 5)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2) - 1, -c7 + (c8 + 5) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 5)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 5)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3) - 1, -c7 + (c8 + 5) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 5)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 5)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4) - 1, -c7 + (c8 + 5) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 5)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 5)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5) - 1, -c7 + (c8 + 5) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 5)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 5)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6) - 1, -c7 + (c8 + 5) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 5)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 5)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7) - 1, -c7 + (c8 + 5) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 6)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 6)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 6) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 6)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 6)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1) - 1, -c7 + (c8 + 6) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 6)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 6)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2) - 1, -c7 + (c8 + 6) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 6)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 6)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3) - 1, -c7 + (c8 + 6) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 6)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 6)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4) - 1, -c7 + (c8 + 6) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 6)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 6)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5) - 1, -c7 + (c8 + 6) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 6)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 6)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6) - 1, -c7 + (c8 + 6) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 6)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 6)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7) - 1, -c7 + (c8 + 6) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 7)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 7)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 7) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 7)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + (c8 + 7)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1) - 1, -c7 + (c8 + 7) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 7)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + (c8 + 7)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2) - 1, -c7 + (c8 + 7) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 7)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + (c8 + 7)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3) - 1, -c7 + (c8 + 7) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 7)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + (c8 + 7)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4) - 1, -c7 + (c8 + 7) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 7)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + (c8 + 7)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5) - 1, -c7 + (c8 + 7) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 7)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + (c8 + 7)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6) - 1, -c7 + (c8 + 7) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 7)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + (c8 + 7)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7) - 1, -c7 + (c8 + 7) - 1); 
        } 

      for (; c9 <= 32 * c6 + 31; c9 = c9 + 1)         { 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 1)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 1)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 1) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 2)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 2)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 2) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 3)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 3)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 3) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 4)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 4)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 4) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 5)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 5)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 5) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 6)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 6)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 6) - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 7)); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + (c8 + 7)); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + (c8 + 7) - 1); 
        } 
    } 

  for (; c8 <= 32 * c5 + 31; c8 = c8 + 1)     { 

      for (c9 = 32 * c6; c9 <= 32 * c6 + 31 - 7; c9 = c9 + 8)         { 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 1) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 2) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 3) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 4) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 5) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 6) - 1, -c7 + c8 - 1); 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7), -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + (c9 + 7) - 1, -c7 + c8 - 1); 
        } 

      for (; c9 <= 32 * c6 + 31; c9 = c9 + 1)         { 
          S2(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + c8); 
          S3(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9, -c7 + c8); 
          S4(c1, -c1 + c3, -c1 + c2, c4, -c4 + c6, -c4 + c5, c7, -c7 + c9 - 1, -c7 + c8 - 1); 
        } 
    } 
} 
/*@ end @*/
            }
            for (c7=max(max(max(32*c5,32*c6-nx+32),0),32*c4);c7<=min(min(min(32*c6-1,32*c4+31),tmax-1),32*c5+30);c7++) {
              for (c9=32*c6;c9<=32*c6+31;c9++) {
                S2(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,0) ;
              }
              for (c8=c7+1;c8<=32*c5+31;c8++) {
                for (c9=32*c6;c9<=32*c6+31;c9++) {
                  S2(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S3(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9,-c7+c8) ;
                  S4(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,c7,-c7+c9-1,-c7+c8-1) ;
                }
              }
            }
            if ((c1 == c3) && (c4 == c6) && (c5 <= min(floord(32*c6-1,32),floord(tmax-32,32)))) {
              S1(c1,-c1+c2,c4,-c4+c5,32*c5+31,0) ;
              for (c9=32*c5+32;c9<=32*c6+31;c9++) {
                S2(c1,0,-c1+c2,c4,0,-c4+c5,32*c5+31,-32*c5+c9-31,0) ;
              }
            }
            if ((c1 == c3) && (-c4 == -c6) && (c4 >= ceild(32*c5-31,32)) && (c4 <= min(floord(32*c5-1,32),floord(tmax-32,32)))) {
              S1(c1,-c1+c2,c4,-c4+c5,32*c4+31,0) ;
              for (c8=32*c4+32;c8<=32*c5+31;c8++) {
                S1(c1,-c1+c2,c4,-c4+c5,32*c4+31,-32*c4+c8-31) ;
                S3(c1,0,-c1+c2,c4,0,-c4+c5,32*c4+31,0,-32*c4+c8-31) ;
              }
            }
            if ((c1 == c3) && (-c4 == -c6) && (c4 <= min(floord(tmax-32,32),c5-1))) {
              for (c8=32*c5;c8<=min(32*c5+31,32*c4+ny+30);c8++) {
                S1(c1,-c1+c2,c4,-c4+c5,32*c4+31,-32*c4+c8-31) ;
                S3(c1,0,-c1+c2,c4,0,-c4+c5,32*c4+31,0,-32*c4+c8-31) ;
              }
            }
            if ((c1 == c3) && (-c4 == -c5) && (-c4 == -c6) && (c4 <= floord(tmax-32,32))) {
              S1(c1,-c1+c2,c4,0,32*c4+31,0) ;
            }
            if ((c4 >= c5) && (c5 <= min(c6-1,floord(tmax-32,32)))) {
              for (c9=32*c6;c9<=min(32*c5+nx+30,32*c6+31);c9++) {
                S2(c1,-c1+c3,-c1+c2,c4,-c4+c6,-c4+c5,32*c5+31,-32*c5+c9-31,0) ;
              }
            }
          }
        }
      }
    }
  }
}
/* End of CLooG code */

    annot_t_end = rtclock();
    annot_t_total += annot_t_end - annot_t_start;
  }
  
  annot_t_total = annot_t_total / REPS;
  printf("%f\n", annot_t_total);

  return ((int) hz[0][0]); 

}
                                    
